// 写一个工厂模式的例子
// 1. 创建一个工厂类
class Factory {
    create(name: string) {
      if (name === "product1") {
        return new Product1();
      } else if (name === "product2") {
        return new Product2();
      }
    }
  }
  // 2. 创建一个产品接口
  interface Product {
    operation(): string;
  }
  // 3. 创建两个具体产品类
  class Product1 implements Product {
    operation() {
      return "product1";
    }
  }
  class Product2 implements Product {
    operation() {
      return "product2";
    }
  }
  // 4. 使用工厂类创建具体产品
  const factory = new Factory();
  const product1 = factory.create("product1");
  const product2 = factory.create("product2");
  // 5. 调用产品的方法
  console.log(product1.operation());
  console.log(product2.operation());
  
  // 解释一下上面的代码
  // 1. 创建一个工厂类，这个工厂类有一个create方法，根据传入的name参数，返回不同的产品
  // 2. 创建一个产品接口，这个接口有一个operation方法
  // 3. 创建两个具体产品类，这两个类都实现了产品接口，实现了operation方法
  // 4. 使用工厂类创建具体产品，通过工厂类的create方法，传入不同的name参数，返回不同的产品
  // 5. 调用产品的方法，通过产品的operation方法，得到不同的结果